iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
Software Development

用leetcode系統化學習C語言系列 第 18

練習 C 語言指標與 malloc 配置新陣列

  • 分享至 

  • xImage
  •  

昨天在1295題中用指標操作陣列,練習了 *(p + i) 的存取方式。今天我們要再往前一步:有些題目不只是操作現有的陣列,還需要「建立一個新的陣列」並回傳,這時候就必須用到動態記憶體配置(malloc)。

leetcode977. Squares of a Sorted Array 題目介紹
給一個非遞減排序的整數陣列,回傳「每個元素平方後,仍然是非遞減排序」的新陣列。
範例:
輸入:nums = [-4,-1,0,3,10]
平方後: [16,1,0,9,100]
排序後: [0,1,9,16,100]
輸出: [0,1,9,16,100]
https://ithelp.ithome.com.tw/upload/images/20251002/20169489tTu8jJZ5H2.png
心得
這一題讓我第一次把 malloc 實際用在 LeetCode 題目裡:
int* result = (int*)malloc(numsSize * sizeof(int));
這行就是在 堆積區(Heap) 動態配置一個陣列,大小和輸入陣列相同
在C語言裡,如果我要回傳一個陣列,就不能用一般的區域陣列(會在函式結束後被釋放),必須用 malloc 來確保記憶體還存在。
題目要求「假設呼叫者會呼叫 free()」,這也是為什麼在函式內 malloc 是安全的
透過這題,我把 指標、陣列、動態記憶體 串起來了,也真正感受到為什麼學指標是必要的。


上一篇
練習 C 語言指標與陣列操作題目
下一篇
練習 C 語言 malloc 與陣列插入
系列文
用leetcode系統化學習C語言24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言